#include<bits/stdc++.h>
using namespace std;
//char a[501], b[501];
//int  ans[502];
int main()
{
//	scanf("%s %s", a, b);
//	int l1 = strlen(a);
//	int l2 = strlen(b);
//	int maxl = l1 > l2 ? l1 : l2;
//
//	for (int i = 0; i < maxl; i++) {
//		if (i < l1) {
//			ans[i] += a[l1 - i - 1] - 48 ;
//		}
//		if (i < l2) {
//			ans[i] += b[l2 - i - 1] - 48 ;
//		}
//
//	}
//	for (int i = 0; i < maxl; i++) {
//		if (ans[i] >= 10) {
//			ans[i + 1] += ans[i] / 10;
//			ans[i] %= 10;
//		}
//	}
//	if (ans[maxl] != 0) {
//		cout << ans[maxl];
//	}
//	for (int i = maxl - 1; i >= 0; i--) {
//
//		cout << ans[i];
//	}	
	string s1, s2;
	cin >> s1 >> s2;
	reverse(s1.begin(), s1.end());
	reverse(s2.begin(), s2.end());
//	string s = "";

	int l1 = s1.length();
	int l2 = s2.length();
	int maxl = max(l1, l2);
	vector<int> s(maxl, -1);

	int carry = 0;

	for (int i = 0; i < maxl; i++) {
		if (i < l1 ) {
			carry += s1[i] - '0' ;
		}
		if (i < l2) {
			carry += s2[i] - '0' ;
		}
		s.push_back(carry % 10);
		carry /= 10;
//		s[i + 1] += s[i] / 10;
//		s[i] %= 10;
	}
	if (carry != 0) {
		s.push_back(carry);
	}

	reverse(s.begin(), s.end());
//	cout << s;

	for (int i = 0; i < maxl; i++) {

		cout << s[i];
	}
	if (s[maxl] != -1) {
		cout << s[maxl];
	}
	return 0;
}
